photo-gallery - 3 - filterable responsive

revision:


code:
    <section class="gallery">
      <div class="container_A">
        <div class="row">
          <div class="gallery-filter">
            <span class="filter-item active" data-filter="all">all</span>
            <span class="filter-item" data-filter="car">car</span>
            <span class="filter-item" data-filter="holiday">holiday</span>
            <span class="filter-item" data-filter="building">building</span>
            <span class="filter-item" data-filter="boat">boat</span>
          </div>
        </div>
        <div class="row1">
          <div class="gallery-item car">
            <div class="gallery-item-inner">
              <img src="../images/car1.jpg" alt="car">
            </div>
          </div>
          <div class="gallery-item car">
            <div class="gallery-item-inner">
              <img src="../images/car2.jpg" alt="car">
            </div>
          </div>
          <div class="gallery-item car">
            <div class="gallery-item-inner">
              <img src="../images/car3.jpg" alt="car">
            </div>
          </div>
          <div class="gallery-item holiday">
            <div class="gallery-item-inner">
              <img src="../images/1.jpg" alt="holiday">
            </div>
          </div>
          <div class="gallery-item holiday">
            <div class="gallery-item-inner">
              <img src="../images/5.jpg" alt="holiday">
            </div>
          </div>
          <div class="gallery-item holiday">
            <div class="gallery-item-inner">
              <img src="../images/10.jpg" alt="holiday">
            </div>
          </div>
          <div class="gallery-item building">
            <div class="gallery-item-inner">
              <img src="../images/11a.jpg" alt="building">
            </div>
          </div>
  
          <div class="gallery-item building">
            <div class="gallery-item-inner">
              <img src="../images/18.jpg" alt="building">
            </div>
          </div>
          <div class="gallery-item boat">
            <div class="gallery-item-inner">
              <img src="../images/4.jpg" alt="boat">
            </div>
          </div>
          <div class="gallery-item boat">
            <div class="gallery-item-inner">
              <img src="../images/6.jpg" alt="boat">
            </div>
          </div>
        </div>
      </div>
    </section>
      <style>
        .container_A{max-width: 99vw; margin:auto;}
        .row1{display: flex;flex-wrap: wrap;}
        img{max-width: 100%; vertical-align: middle; }
        /*.gallery*/
        .gallery{width: 100%; display: block; min-height: 100vh; background-color: transparent; padding: 100px 0;}
        .gallery .gallery-filter{padding: 0 15px; width: 100%; text-align: center; margin-bottom: 40px;}
        .gallery .gallery-filter .filter-item{ color: grey; font-size: 17px; border: 2px solid darkgrey; text-transform: uppercase;
          display: inline-block; border-radius: 20px; margin-right: 8px; cursor: pointer; padding: 8px 20px 8px 20px; line-height: 1.2;
          transition: all 0.3s ease; }
        .gallery .gallery-filter .filter-item.active{ color: white; border-color : #16b5ef; background: #16b5ef;}
        .gallery .gallery-item{width: calc(100% / 3); padding: 15px;}
        .gallery .gallery-item-inner img{width: 100%; border: 3px solid #d4dad9;}
        .gallery .gallery-item.show{animation: fadeIn 0.5s ease;}
        @keyframes fadeIn{
          0%{ opacity: 0;}
          100%{opacity: 1;}
        }
        .gallery .gallery-item.hide{
          display: none;
        }
  
        /*responsive*/
        @media(max-width: 491px){
          .gallery .gallery-item{width: 50%;}
        }
        @media(max-width: 467px){
            .gallery .gallery-item{width: 100%;}
            .gallery .gallery-filter .filter-item{margin-bottom: 10px;}
        }
    </style>
    <script>
          const filterContainer = document.querySelector(".gallery-filter"),
          galleryItems = document.querySelectorAll(".gallery-item");
        
          filterContainer.addEventListener("click", (event) =>{
            if(event.target.classList.contains("filter-item")){
              // deactivate existing active 'filter-item'
              filterContainer.querySelector(".active").classList.remove("active");
              // activate new 'filter-item'
              event.target.classList.add("active");
              const filterValue = event.target.getAttribute("data-filter");
              galleryItems.forEach((item) =>{
                if(item.classList.contains(filterValue) || filterValue === 'all'){
                item.classList.remove("hide");
                  item.classList.add("show");
                }
                else{
                item.classList.remove("show");
                item.classList.add("hide");
                }
              });
            }
          });
    </script>